package com.hakim.wfb.admin.service.api;

import com.hakim.wfb.admin.params.admin.*;
import com.hakim.wfb.admin.result.admin.*;
import com.hkfs.fundamental.api.data.ListResultEx;
import com.hkfs.fundamental.api.data.ObjectResultEx;
import com.hkfs.fundamental.api.data.ResultEx;


/**
 * 菜单权限操作
 */
public interface SystemAuthService {
    /**
     * 查询角色列表
     *
     * @param param
     * @return
     */
    public ListResultEx<RoleFullView> queryRoleList(QueryRoleParam param);

    /**
     * 新增角色
     *
     * @param param
     * @return
     */
    public ObjectResultEx<RoleView> addRole(AddRoleParam param);

    /**
     * 获取单条角色信息
     *
     * @param param
     * @return
     */
    public ObjectResultEx<RoleView> getRole(GetRoleParam param);

    /**
     * 修改角色
     *
     * @param param
     * @return
     */
    public ResultEx modifyRole(ModifyRoleParam param);

    /**
     * 删除角色
     *
     * @param param
     * @return
     */
    public ResultEx deleteRole(DeleteRoleParam param);

    /**
     * 查询用户列表
     *
     * @param param
     * @return
     */
    public ListResultEx<QueryAdminView> queryUserList(QueryAdminParam param);

    /**
     * 获取用户及角色列表
     *
     * @param param
     * @return
     */
    ObjectResultEx<AdminRolesResultView> queryUserRoles(GetAdminParam param);

    /**
     * 添加用户
     *
     * @param param
     * @return
     */
    public ObjectResultEx<AdminFullView> addUser(AddAdminParam param);

    /**
     * 获取单条用户信息
     *
     * @param param
     * @return
     */
    public ObjectResultEx<AdminFullView> getUser(GetAdminParam param);

    /**
     * 修改用户信息
     *
     * @param param
     * @return
     */
    public ResultEx modifyUser(ModifyAdminParam param);

    /**
     * 查询菜单列表
     *
     * @param param
     * @return
     */
    public ListResultEx<QueryMenuView> queryMenuList(QueryMenuParam param);

    /**
     * 添加菜单
     *
     * @param param
     * @return
     */
    public ObjectResultEx<MenuFullView> addMenu(AddMenuParam param);

    /**
     * 获取单条菜单信息
     *
     * @param param
     * @return
     */
    public ObjectResultEx<MenuFullView> getMenu(GetMenuParam param);

    /**
     * 修改菜单
     *
     * @param param
     * @return
     */
    public ResultEx modifyMenu(ModifyMenuParam param);

    /**
     * 删除菜单
     *
     * @param param
     * @return
     */
    public ResultEx deleteMenu(DeleteMenuParam param);

    /**
     * 获取菜单列表
     *
     * @param param
     * @return
     */
    public ListResultEx<AdminMenuResultView> getUserMenu(GetAdminMenuParam param);
}
